# 日志设置

import os
from Lianyi.settings import BASE_DIR

LOGGING = {
    'version': 1,  # 指定日志配置的版本，这是Django日志配置的固定格式
    'disable_existing_loggers': False,  # 不禁用已存在的日志器
    'formatters': {  # 格式化器，用于定义日志消息的格式
        'verbose': {  # 详细格式的格式化器
            'format': '{levelname} {asctime} {module} {message}',  # 指定日志消息的格式
            'style': '{',  # 使用花括号风格的字符串格式化
        },
        'simple': {  # 简单格式的格式化器
            'format': '{levelname} {message}',  # 指定日志消息的格式
            'style': '{'  # 使用花括号风格的字符串格式化
        },
    },
    'filters': {  # 过滤器，用于定义哪些日志消息应该被记录
        'require_debug_false': {  # 仅在DEBUG=False时记录日志消息
            '()': 'django.utils.log.RequireDebugFalse',
        },
    },
    'handlers': {  # 处理器，用于定义日志消息将被发送到哪里
        'file': {  # 文件处理器，将日志消息记录到文件
            'level': 'INFO',  # 处理INFO级别及以上的日志消息
            'class': 'logging.FileHandler',  # 使用FileHandler类
            'filename': os.path.join(BASE_DIR, 'log', 'debug.log'),  # 日志文件的路径
            'formatter': 'verbose',  # 使用详细格式的格式化器
        },
        'console': {  # 控制台处理器，将日志消息输出到控制台
            'level': 'WARNING',  # 处理WARNING级别及以上的日志消息
            'class': 'logging.StreamHandler',  # 使用StreamHandler类
            'formatter': 'simple',  # 使用简单格式的格式化器
        },
        'mail_admins': {  # 邮件处理器，将错误日志消息通过邮件发送给管理员
            'level': 'ERROR',  # 处理ERROR级别及以上的日志消息
            'filters': ['require_debug_false'],  # 仅在DEBUG=False时发送邮件
            'class': 'django.utils.log.AdminEmailHandler',  # 使用AdminEmailHandler类
        },
    },
    'loggers': {  # 日志器，用于定义日志消息的来源
        'django': {  # Django框架的日志器
            'handlers': ['console', 'file'],  # 使用控制台和文件处理器
            'level': 'DEBUG',  # 记录DEBUG级别及以上的日志消息
            'propagate': True,  # 允许日志消息传播到父日志器
        },
        'django.request': {  # Django请求处理的日志器
            'handlers': ['mail_admins', 'file'],  # 使用邮件和文件处理器
            'level': 'ERROR',  # 记录ERROR级别及以上的日志消息
            'propagate': True,  # 不允许日志消息传播到父日志器
        },
        'myapp': {  # 自定义应用程序的日志器
            'handlers': ['console', 'file'],  # 使用控制台和文件处理器
            'level': 'DEBUG',  # 记录DEBUG级别及以上的日志消息
        }
    }
}
